IF exists(SELECT * FROM dbo.sysobjects WHERE name='r_XMLhoudinglijstCijfers' AND xtype='P') 
BEGIN
	DROP PROCEDURE r_XMLhoudinglijstCijfers
END
GO

CREATE       procedure r_XMLhoudinglijstCijfers(@klas varchar(5), @school varchar(50), 
		@periode int, @jaar int)
as
set nocount on

set @klas = isNull(@klas,'')
set @school = isNull(@school,'')
set @periode = isNull(@periode,0)
set @jaar = isNull(@jaar,0)


create table #tussen( tekst varchar(8000))
create table #vakken( volgNummer char(2),vak varchar(2))
create table #codes(categorie varchar(20))
create table #cijfers(iNr char(7),vak varchar(2),categorie varchar(20),cijfer varchar(3))


-- De vakken worden ingevuld:

insert into #vakken(volgNummer,vak)
select distinct volgnummer,vakcode 
  from leraars.dbo.alleKlasVakcodes(@klas)
  order by volgnummer

--Alle cijfers worden ingevoegd

insert into #cijfers(iNr,vak,categorie,cijfer)
select l.inschrijvingsNr,v.vak,c.categorie,'-' from
  (select inschrijvingsNr from leerlingen..leerlingen where klas = @klas) as l
	cross join #vakken as v
		cross join #codes as c
update #cijfers
set cijfer = case when r.cijfer >= 0 then convert(varchar(5),r.cijfer)
				     else '-' end
from (select * from r_houdingcijfers where periode = @periode) as r
left join #cijfers as c
  on r.inschrijvingsNr = c.iNr
	and r.vak = c.vak
	and r.categorie = c.categorie 

-----------------  OPBOUW DOCUMENT  -----------------------------------

-- De juiste stijl-pagina wordt aan de XML-pagina gelinkt.
insert into #tussen(tekst)
values('<?xml version="1.0"  encoding="ISO-8859-1" ?>')
insert into #tussen(tekst)
values('<?xml-stylesheet type="text/xsl" href="houdingLijst.xsl" ?>')

-- De titel en de 
insert into #tussen(tekst)

values('<houdingLijst><hoofding><titel>' + @klas + ' Attituderesultaten ' 
	+ convert(varchar(2),@periode) 
	+ '</titel>')
insert into #tussen(tekst)

values('<school>' + @school + '</school>')
insert into #tussen(tekst)
values('<klas>' + @klas + '</klas>')
insert into #tussen(tekst)
values('<comBestand>' + @klas + 'ch' + convert(varchar(2), @periode) + '.xml</comBestand>')
insert into #tussen(tekst)
values('<periode>Attituderesultaten ' + convert(varchar(2),@periode) 
	+ ' - schooljaar ' + convert(varchar(4),@jaar) + ' - ' +
	+ convert(varchar(4),@jaar + 1) + '</periode>')

insert into #tussen(tekst)
values('<vakken>')
insert into #tussen(tekst)
select '<vak>' + vak + '</vak>'
from #vakken order by volgNummer
insert into #tussen(tekst)
values('</vakken>')

insert into #tussen(tekst)
values('</hoofding><leerlingen>')

--Een cursor die over de leerlingen van de klas loopt.
declare @inschrijvingsNr char(7)
declare @achternaam varchar(50)
declare @voornaam varchar(50)

-- De gegevens worden ingevoegd m.b.v. twee cursors. 
-- De eerste loopt over de leerlingen, 
-- de tweede over de vakken.	

declare deCursor cursor local for 
  select inschrijvingsNr,achternaam,voornaam
  from leerlingen.dbo.leerlingen
  where klas= @klas 
  order by klasNr
for read only

declare vakCursor cursor local for 
  select vak from #vakken
for read only

open deCursor
fetch next from deCursor into @inschrijvingsNr,@achternaam,@voornaam
while (@@fetch_status=0)
begin
  -- De naam van de leerling wordt ingevoegd
  insert into #tussen(tekst)
  values('<lln><naam>' + isNull(@voornaam,'') + ' ' + isNull(@achternaam,'') + '</naam>')

  -- De vakresultaten van de leerling worden ingevoegd
	declare @vak char(2)
	open vakCursor
	fetch next from vakCursor into @vak
	while (@@fetch_status=0)	
	  begin
  		insert into #tussen(tekst)
  		select '<vak code="' + @vak + '">' 
		
		insert into #tussen(tekst)
		select '<c naam="' + categorie + '">' + cijfer + '</c>'
  		from #cijfers as c
	        where iNr = @inschrijvingsNr and
			vak = @vak 
		order by categorie
		  insert into #tussen(tekst)
		  values('</vak>')
		fetch next from vakCursor into @vak
	  end  
        close vakCursor
  insert into #tussen(tekst)
  values('</lln>')
  fetch next from deCursor into @inschrijvingsNr,@achternaam,@voornaam
end
close deCursor
deallocate deCursor
deallocate vakCursor

-- Afsluiting
insert into #tussen(tekst)
values('</leerlingen></houdingLijst>')

select * from #tussen